package com.maxbill.singleton;


import lombok.extern.log4j.Log4j2;

/*
 * 单例模式-饿汉模式
 * 特点：线程安全，调用效率高，但是不能延时加载
 * 优点：仅实例化一次，线程是安全的，获取实例的速度快
 * 缺点：类加载时立即实例化对象，可能实例化的对象不被使用，造成内存的浪费
 * 注意：饿汉式单例在类创建的同时就已经创建好一个静态的对象供系统使用，以后不再改变，所以是线程安全的，可以直接用于多线程而不会出现线程安全问题
 * 饿汉式是典型的空间换时间，当类装载的时候就会创建类实例，不管你用不用，先创建出来，然后每次调用的时候，就不需要判断了，节省了运行时间。
 */
@Log4j2
public class SingletonHungerMode {

    private static SingletonHungerMode instance = new SingletonHungerMode();

    public static SingletonHungerMode getInstance() {
        return instance;
    }

    @Override
    public Object clone() {
        SingletonHungerMode singletonHungerMode = null;
        try {
            singletonHungerMode = (SingletonHungerMode) super.clone();
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
        return singletonHungerMode;
    }

    private Object readResolve() {
        return instance;
    }


}
